package horario.recursos.utiles;

import javax.swing.*;
import java.awt.*;
/**
 * La clase <code>LE</code> permite la Lectura y Escritura de datos a trav�s de cuadros de di�logos.
 *
 * @version	1.30 02 Junio 2004
 * @author	Jessica Paulino 
 * @author	Gisella Guzm�n
 */
public class LE {
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de un caracter.
 * @param mensaje especifica la solicitud del caracter a ingresar.
 */
public static char leerChar(String mensaje) {
    String cadena;
    do {
        cadena = JOptionPane.showInputDialog(mensaje);
        if(cadena==null){
	        return ' ';
        }
        if (cadena.length() != 1)
                mostrarError("Error... debe ingresar un caracter");

    } while (cadena.length() != 1);
    char c = cadena.charAt(0);
    return c;

}
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de un valor real double.
 * @param mensaje especifica la solicitud del valor a ingresar.
 * @return el n�mero real double ingresado por el usuario, o el m�nimo valor 
 *         real double si se da clic al bot�n Cancel o al control de salida.
 */
public static double leerDouble(String mensaje) {
    String cadena = leerString(mensaje);
    if (cadena != null) {
        try {
            return Double.parseDouble(cadena);
        } catch (NumberFormatException e) {
            mostrarError("Error... debe ingresar un n�mero real double ");
            return leerDouble(mensaje);
        }
    }
    return Double.MIN_VALUE;
}
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de un valor real float.
 * @param mensaje especifica la solicitud del valor a ingresar.
 * @return el n�mero real float ingresado por el usuario, o el m�nimo valor 
 *         real float si se da clic al bot�n Cancel o al control de salida.
 */
public static float leerFloat(String mensaje) {
	String cadena=leerString(mensaje);
	if(cadena!=null){
	try {
		return Float.parseFloat(cadena);
	} catch (NumberFormatException e) {
		mostrarError("Error... debe ingresar un n�mero real float ");
		return leerFloat(mensaje);
	}
	}
	return Float.MIN_VALUE;
}
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de un valor entero int.
 * @param mensaje especifica la solicitud del valor a ingresar.
 * @return el n�mero entero int ingresado por el usuario, o el m�nimo valor 
 *         entero int si se da clic al bot�n Cancel o al control de salida.
 */

public static int leerInt(String mensaje) {
    String cadena = leerString(mensaje);
    if (cadena != null) {
        try {
            return Integer.parseInt(cadena);
        } catch (NumberFormatException e) {
            mostrarError("Error... debe ingresar un n�mero entero");
            return leerInt(mensaje);
        }
    }
    return Integer.MIN_VALUE;
}
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de un valor entero long.
 * @param mensaje especifica la solicitud del valor a ingresar.
 * @return el n�mero entero long ingresado por el usuario, o el m�nimo valor 
 *         entero long si se da clic al bot�n Cancel o al control de salida.
 */
public static long leerLong(String mensaje) {
	String cadena=leerString(mensaje);
	if(cadena!=null){
	try {
		return Long.parseLong(cadena);
	} catch (NumberFormatException e) {
		mostrarError("Error... debe ingresar un n�mero entero long");
		return leerLong(mensaje);
	}
	}
	return Long.MIN_VALUE;
}
/**
 * Muestra un cuadro de di�logo solicitando el ingreso de una cadena.
 * @param mensaje especifica la solicitud de la cadena a ingresar.
 * @return la cadena que se ingresa o null si se da clic al boton cancel 
 *		   o al control de salida.
 */
public static String leerString(String mensaje) {
    return JOptionPane.showInputDialog(mensaje);
}
/**
 * Muestra un cuadro de di�logo con una advertencia especificada en el argumento.
 * @param mensaje es la advertencia a mostrar.
 */
public static void mostrarAdvertencia(String mensaje) {
	JOptionPane.showMessageDialog(null,mensaje,"Advertencia",JOptionPane.WARNING_MESSAGE);
}
/**
 * Muestra un cuadro de di�logo con un mensaje de error especificado en el argumento.
 * @param mensaje es el error a mostrar.
 */
public static void mostrarError(String mensaje) {
	JOptionPane.showMessageDialog(null,mensaje,"Error",JOptionPane.ERROR_MESSAGE);
}
/**
 * Muestra un cuadro de di�logo con una informaci�n especificada en el argumento.
 * @param mensaje es la informaci�n a mostrar.
 */
public static void mostrarInformacion(String mensaje) {
	JOptionPane.showMessageDialog(null,mensaje,"Informaci�n",JOptionPane.INFORMATION_MESSAGE);
}
/**
 * Muestra un cuadro de di�logo con una pregunta especificada en el argumento.
 * @param mensaje es la pregunta a mostrar.
 */
public static void mostrarPregunta(String mensaje) {
	JOptionPane.showMessageDialog(null,mensaje,"Pregunta",JOptionPane.QUESTION_MESSAGE);
}
/**
 * Muestra un cuadro de di�logo con una pregunta especificada en el argumento  y 2 opciones de respuesta a elegir.
 * @param mensaje es la pregunta a mostrar.
 * @return	el entero 0 o 1 si se presion� el bot�n con la opci�n YES o NO respectivamente.
 *	Si se cierra este cuadro de di�logo sin presionar alg�n bot�n, retorna el entero -1.
 */
public static int mostrarPreguntaOpcion2(String mensaje) {
	return JOptionPane.showOptionDialog(null, mensaje, "Pregunta",
		   				JOptionPane.YES_NO_OPTION, 
		   				JOptionPane.QUESTION_MESSAGE, null, null, null);
}
/**
 * Muestra un cuadro de di�logo con una pregunta especificada en el argumento y 3 opciones de respuesta a elegir.
 * @param mensaje es la pregunta a mostrar.
 * @return	el entero 0, 1 o 2 si se presion� el bot�n con la opci�n YES, NO o CANCEL respectivamente. 
 *	Si se cierra este cuadro de di�logo sin presionar alg�n bot�n, retorna el entero -1.
 */
public static int mostrarPreguntaOpcion3(String mensaje) {
	return JOptionPane.showOptionDialog(null, mensaje, "Pregunta",
		   				JOptionPane.YES_NO_CANCEL_OPTION, 
		   				JOptionPane.QUESTION_MESSAGE, null, null, null);
}
/**
 * Muestra un cuadro de di�logo con alg�n tipo de mensaje. No presenta �cono.
 * @param mensaje es el mensaje a mostrar.
 */
public static void mostrarResultado(String mensaje) {
	JOptionPane.showMessageDialog(null,mensaje,"Resultado",JOptionPane.PLAIN_MESSAGE);
}
public static void mostrarResultadoFormateado(String mensaje) {
TextArea objTextArea=new TextArea();
objTextArea.setSize(1000,1000);
objTextArea.setFont(new Font("Courier",Font.PLAIN,14));
objTextArea.setText(mensaje);
objTextArea.setEditable(false);
JOptionPane.showMessageDialog(null,objTextArea,"Resultado",JOptionPane.PLAIN_MESSAGE);
}
}
